package com.leyou.trade.entity;

import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

import java.util.Date;

/**
 * 最后，我们需要在实体类的@Document注解中，动态的获取collection的name，怎么办？
 * SpringDataMongoDB中的@Document注解是支持spEL表达式的，
 * 因此我们可以通过spEL来调用UserHolder中的方法，获取用户信息。
 *
 * 集合名称中的spEL语法说明：
 * "#{@collectionNameBuilder.build()}"
 * - #{}：代表spEL表达式
 * - @collectionNameBuilder：从spring容器中寻找名为collectionNameBuilder的bean
 * - .build()：调用build()方法
 */
@Data
@Document("#{@collectionNameBuilder.build()}")
public class CartItem{
    @Id
    @JsonIgnore
    private String id;   //联合主键 userId +  skuId
    @JsonIgnore
    private Long userId;//用户id
    private Long skuId;// 商品id
    private String title;// 标题
    private String image;// 图片
    private Long price;// 加入购物车时的价格
    private Integer num;// 购买数量
    private String spec;// 商品规格参数
    private Date updateTime;// 更新时间
}